package TUILayer;//makes this class a part of the TUILayer package
import java.util.Scanner;
import java.util.ArrayList;
import ControlLayer.*;//The TUILayer needs to know the ControlLayer

/**
 * 
 * 
 * @author (Brian, Jesper, Jesper Hoang) 
 * @version ()
 */
public class KundeUI
{   
    //Instance variabler
    private KundeCtr kundeCtr;
    
    //Constructor
    public KundeUI()
    {
        kundeCtr = new KundeCtr();      
    }
    
    //Metode til at starte kunde menuen
    public void start()
    {   
        kundeMenu();
    }
    
    //Metode til at styre kunde menuen
    public void kundeMenu()
    {
       boolean exit = false;
       while(!exit)//that is: while exit is false
       {
          int choise = skrivKundeMenu(); 
          if(choise == 1)
          {   //Vis KundeGruppe Info
              kundeGruppeInfo();
          }
          else
          {
              if(choise == 2)
              {
                    //Opret KundeGruppe
                    opretKundeGruppe();
              }  
              else
              {
                  if(choise == 3)
                  {
                      //Slet KundeGruppe
                      sletKundeGruppe();
                  }  
                  else
                  {
                      if(choise == 4)
                      {
                          //Opdater KundeGruppe
                          opdaterKundeGruppe();
                      }
                      else
                      {
                          if(choise == 5)
                          {
                              //Vis KundeGrupper;
                              visKundeGrupper();
                          }
                          else
                          {
                              if(choise == 6)
                              {
                              }
                              else
                            {
                                if(choise == 7)
                                {
                                }
                                else
                                {
                                    if(choise == 8)
                                    {
                                    }
                                    else
                                    {
                                        if(choise == 9)
                                        {
                                        }
                                        else
                                        {
                                            if(choise == 10)
                                            {
                                            }
                                            else
                                            {
                                                if(choise == 11)
                                                {
                                                    exit = true;
                                                }
                                                else
                                                {
                                                    System.out.println("Forkert input. Prøv igen!");
                                                    pause();
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                           }//end else
                        }//end else
                    }//end else
                }//end else
            }//end else
       }//end while
    }
    
    //Metode til at udskrive kunde menuen
    public int skrivKundeMenu()
    {      
            Scanner keyboard = new Scanner(System.in);
            System.out.println("\f *** Kunde Menu ***");
            System.out.println(" (1) Vis KundeGruppe Info");
            System.out.println(" (2) Opret KundeGruppe");
            System.out.println(" (3) Slet KundeGruppe");
            System.out.println(" (4) Opdate KundeGruppe");
            System.out.println(" (5) Vis KundeGrupper");
            System.out.println(" -----------------------------------");
            System.out.println(" (6) Vis Kunde Info");
            System.out.println(" (7) Opret Kunde");
            System.out.println(" (8) Slet Kunde");
            System.out.println(" (9) Opdater Kunder");
            System.out.println(" (10) Vis Kunder");
            System.out.println(" -----------------------------------");
            System.out.println(" (11) Tilbage");
            System.out.print("\n Indtast valg: ");
            
            int choise = keyboard.nextInt();
            return choise;
        }
        
    //Metode til at læse id input
    public int inputId()
    {   
        boolean ok = false;
        int id = 0;
        while(!ok)
        {
           Scanner keyboard = new Scanner(System.in);
           System.out.println(" Skriv Id:  ");
           try{
             id = keyboard.nextInt();
             ok = true;
           }
           catch (Exception e)
            {
             System.out.println("Der skal indtastes et tal -  prøv igen");
             int input = keyboard.nextInt();
           }
        }//end while
        return id;
    }
    
    //Metode til at læse navn input
    public String inputNavn()
    {
         Scanner keyboard = new Scanner(System.in);  
         System.out.println(" Indtast Navn:  ");
         String firmaNavn = keyboard.nextLine();
         return firmaNavn;
    }
    
    //Metode til at læse adresse input
    public String inputAdresse()
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println(" Indtast Adresse:  ");
        String adresse = keyboard.nextLine();
        return adresse;
    }
    
    //Metode til at læse telefon nummer input
    public int inputTelefonNummer()
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println(" Indtast Telefon Nummer:  ");
        int telefonNummer = keyboard.nextInt();
        return telefonNummer;
    }

    //Metode til at læse statistik input
    public double inputStatistik()
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("  Indtast Forbrug:  ");
        double statistik = keyboard.nextDouble();
        return statistik;
    }
    
    //Metode til at udskrive kundegruppe info
    private void kundeGruppeInfo()
    {
        int _id = inputId();
        
        String info = kundeCtr.getKundeGruppe(_id);
        
        System.out.println(info);
        
        pause();
    }
    
    //Metode til at oprette en kundegruppe
    private void opretKundeGruppe()
    {
        System.out.println();
        System.out.println(" Opret ny KundeGruppe:");
        
        
        int _id = inputId();
        String _firmaNavn = inputNavn();
        String _adresse = inputAdresse();
        int _telefonNummer = inputTelefonNummer();
        double _statistik = inputStatistik();
        
        kundeCtr.createKundeGruppe(_id, _firmaNavn, _adresse, _telefonNummer, _statistik);
        
        
        System.out.println();
        System.out.println(" " + _firmaNavn + " er blevet oprettet!");
        
        pause();
    }
    
    //Metode til at slette en kundegruppe
    private void sletKundeGruppe()
    {
        int _id = inputId();
        
        if(kundeCtr.deleteKundeGruppe(_id))
        {
            System.out.println(" KundeGruppe " + _id + " er blevet slettet!");
        }
        else
        {
            System.out.println(" KundeGruppe " + _id + " findes ikke. Prøv igen!");
        }
        
        pause();
    }
        
    //Metode til at opdatere en kundegruppe
    private void opdaterKundeGruppe()
    {
        int _id = inputId();
        String _firmaNavn = inputNavn();
        String _adresse = inputAdresse();
        int _telefonNummer = inputTelefonNummer();
        double _statistik = inputStatistik();
        
        boolean success = kundeCtr.opdaterKundeGruppe(_id, _firmaNavn, _adresse, _telefonNummer, _statistik);
        
        if(success)
        {
            System.out.println();
            System.out.println(" " + _firmaNavn + " er blevet opdateret!");
        }
        else
        {
            System.out.println();
            System.out.println(" " + _firmaNavn + " kunne ikke opdateres! Prøv igen!");
        }
        
        pause();
    }
    
    //Metode til at udskrive alle kundegrupperne
    private void visKundeGrupper()
    {
        System.out.println(kundeCtr.listAllKundeGruppe()); 
        
        pause();
    }
    
    //Metode til at pause kunde menuen
    private void pause()
    {
        Scanner keyboard = new Scanner(System.in);
        String vent = keyboard.nextLine();
    }
}
